package com.example.teachmvandroidchart.ui

import android.graphics.Color
import android.os.Bundle
import android.view.View
import com.android.frame.mvp.CommonBaseActivity
import com.example.teachmvandroidchart.databinding.ActivityMpandroidchartBinding
import com.gyf.immersionbar.ImmersionBar
import com.github.mikephil.charting.data.PieEntry

import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend

import com.github.mikephil.charting.data.PieDataSet

import com.github.mikephil.charting.data.PieData

import androidx.appcompat.app.AppCompatActivity
import com.example.teachmvandroidchart.databinding.ActivityOtherBinding
import com.github.mikephil.charting.components.YAxis

import com.github.mikephil.charting.components.AxisBase

import com.github.mikephil.charting.formatter.IAxisValueFormatter

import com.github.mikephil.charting.components.XAxis

import com.github.mikephil.charting.data.RadarData

import com.github.mikephil.charting.data.RadarDataSet

import com.github.mikephil.charting.data.RadarEntry

import com.github.mikephil.charting.charts.RadarChart





/**
 * Created by dell on 2021/8/11.
 */
class OtherActiviyy: CommonBaseActivity<ActivityOtherBinding>() {

    var list: MutableList<PieEntry>? = null
    override fun handleView(savedInstanceState: Bundle?) {
        intView()
        /**/
        pie()
        radar()
    }
    private fun intView() {
        ImmersionBar.with(this).titleBar(binding.toolbar).keyboardEnable(true).init()
        ImmersionBar.with(this).titleBar(binding.toolbar).init()
        setSupportActionBar(binding.toolbar)
        val actionBar = supportActionBar
        actionBar?.setDisplayHomeAsUpEnabled(true)
    }
    override fun initListener() {

        //toolbar返回按钮监听
        binding.toolbar.setNavigationOnClickListener { finish() }
    }
    fun intDate(){


    }
    fun pie(){
        val pie: PieChart = binding.pie
        list = ArrayList()
        (list as ArrayList<PieEntry>).add(PieEntry(56F, "男性"))
        (list as ArrayList<PieEntry>).add(PieEntry(44F, "女性"))
        val pieDataSet = PieDataSet(list, "")
        val pieData = PieData(pieDataSet)
        pie.data = pieData
        pie.setBackgroundColor(Color.GRAY)

        //设置各个数据的颜色
        pieDataSet.setColors(Color.RED, Color.BLUE)
        //实体扇形的空心圆的半径   设置成0时就是一个圆 而不是一个环
        pie.holeRadius = 30f
        //中间半透明白色圆的半径    设置成0时就是隐藏
        pie.transparentCircleRadius = 30f
        //设置中心圆的颜色
        pie.setHoleColor(Color.CYAN)
        //设置中心部分的字  （一般中间白色圆不隐藏的情况下才设置）
        pie.centerText = "男女比例"
        //设置中心字的字体颜色
        pie.setCenterTextColor(Color.RED)
        //设置中心字的字体大小
        pie.setCenterTextSize(16f)
        //设置描述的字体大小（图中的  男性  女性）
        pie.setEntryLabelTextSize(20f)
        //设置数据的字体大小  （图中的  44     56）
        pieDataSet.valueTextSize = 20f
        //设置描述的位置
        pieDataSet.xValuePosition = PieDataSet.ValuePosition.OUTSIDE_SLICE
        pieDataSet.valueLinePart1Length = 0.6f //设置描述连接线长度
        //设置数据的位置
        pieDataSet.yValuePosition = PieDataSet.ValuePosition.OUTSIDE_SLICE
        pieDataSet.valueLinePart2Length = 0.6f //设置数据连接线长度
        //设置两根连接线的颜色
        pieDataSet.valueLineColor = Color.WHITE

        //对于右下角一串字母的操作
        pie.description.isEnabled = false //是否显示右下角描述
        pie.description.text = "这是修改那串英文的方法" //修改右下角字母的显示
        pie.description.textSize = 20f //字体大小
        pie.description.textColor = Color.RED //字体颜色

        //图例
        val legend = pie.legend
        legend.isEnabled = true //是否显示图例
        legend.position = Legend.LegendPosition.BELOW_CHART_CENTER //图例的位置


        //数据更新
        pie.notifyDataSetChanged()
        pie.invalidate()

        //动画（如果使用了动画可以则省去更新数据的那一步）
        pie.animateY(3000) //在Y轴的动画  参数是动画执行时间 毫秒为单位
        //        line.animateX(2000); //X轴动画
    //        line.animateXY(2000,2000);//XY两轴混合动画
    }
    fun radar(){
        val radar: RadarChart? = binding.radar
        var list: MutableList<RadarEntry>? = null
        var list2: MutableList<RadarEntry>? = null
        list = ArrayList()
        list2 = ArrayList()
        list.add(RadarEntry(30F))
        list.add(RadarEntry(35F))
        list.add(RadarEntry(40F))
        list.add(RadarEntry(35F))
        list.add(RadarEntry(20F))
        list2.add(RadarEntry(50F))
        list2.add(RadarEntry(45F))
        list2.add(RadarEntry(55F))
        list2.add(RadarEntry(40F))
        list2.add(RadarEntry(60F))
        val radarDataSet = RadarDataSet(list, "男性")
        radarDataSet.color = Color.RED
        val radarDataSet1 = RadarDataSet(list2, "女性")
        radarDataSet1.color = Color.BLUE
        val radarData = RadarData(radarDataSet)
        radarData.addDataSet(radarDataSet1)
        radar!!.data = radarData

        //Y轴最小值不设置会导致数据中最小值默认成为Y轴最小值
        radar.yAxis.axisMinimum = 0f

        //大字的颜色（中心点和各顶点的连线）
        radar.webColor = Color.CYAN
        //所有五边形的颜色
        radar.webColorInner = Color.CYAN
        //整个控件的背景颜色
        radar.setBackgroundColor(Color.LTGRAY)
        val xAxis = radar.xAxis
        xAxis.textColor = Color.RED //X轴字体颜色
        xAxis.textSize = 16f //X轴字体大小
        //自定义X轴坐标描述（也就是五个顶点上的文字,默认是0、1、2、3、4）
        xAxis.valueFormatter =
            IAxisValueFormatter { v, axisBase ->
                if (v == 0f) {
                    return@IAxisValueFormatter "语文"
                }
                if (v == 1f) {
                    return@IAxisValueFormatter "数学"
                }
                if (v == 2f) {
                    return@IAxisValueFormatter "英语"
                }
                if (v == 3f) {
                    return@IAxisValueFormatter "生物"
                }
                if (v == 4f) {
                    "地理"
                } else ""
            }


        //是否绘制雷达框上对每个点的数据的标注    和Y轴坐标点一般不同时存在 否则显得很挤  默认为true
        radarDataSet.setDrawValues(false)
        radarDataSet1.setDrawValues(false)
        radarDataSet.valueTextSize = 12f //数据值得字体大小（这里只是写在这）
        radarDataSet.valueTextColor = Color.CYAN //数据值得字体颜色（这里只是写在这）
        val yAxis = radar!!.yAxis
        //是否绘制Y轴坐标点  和雷达框数据一般不同时存在 否则显得很挤 默认为true
        yAxis.setDrawLabels(true)
        yAxis.textColor = Color.GRAY //Y轴坐标数据的颜色
        yAxis.axisMaximum = 80f //Y轴最大数值
        yAxis.axisMinimum = 0f //Y轴最小数值
        //Y轴坐标的个数    第二个参数一般填false     true表示强制设置标签数 可能会导致X轴坐标显示不全等问题
        yAxis.setLabelCount(10, false)


        //对于右下角一串字母的操作
        radar.description.isEnabled = false //是否显示右下角描述
        radar.description.text = "这是修改那串英文的方法" //修改右下角字母的显示
        radar.description.textSize = 20f //字体大小
        radar.description.textColor = Color.CYAN //字体颜色

        //图例
        val legend = radar.legend
        legend.isEnabled = true //是否显示图例
        legend.position = Legend.LegendPosition.BELOW_CHART_CENTER //图例的位置
    }


}
